import mysql from 'mysql'
import dataBase from '../../config/index'
const {
    host,
    user,
    password,
    database
} = dataBase
const pool = mysql.createPool({
    host,
    user,
    password,
    database
});

//多条sql语句查询(需要数据库连接需要开启:"multipleStatements": true,)
let queryAlls = (sql, ...params) => {
    sql = mysql.format(coding + sql, params);

    console.log(sql);
    return new Promise(function (resolve, reject) {
        pool.getConnection(function (err, conn) {
            if (err) {
                reject(err);
                return;
            }
            conn.query(sql, (err, result) => {
                conn.release(); //连接不再使用，返回到连接池
                if (err) {
                    reject(err);
                    return;
                }
                coding ? result.shift() : coding;
                resolve(result);
            });
        });
    });
};

// 返回一个数组对象，所有数据
let queryAll = (sql, ...params) => {
    sql = mysql.format(coding + sql, params);

    console.log(sql);
    return new Promise(function (resolve, reject) {
        pool.getConnection(function (err, conn) {
            if (err) {
                reject(err);
                return;
            }
            conn.query(sql, (err, result) => {
                conn.release(); //连接不再使用，返回到连接池
                if (err) {
                    reject(err);
                    return;
                }
                coding ? result.shift() : coding;
                // result = Array.prototype.concat.apply([],result);//二维数组转一维
                // coding ? result[0] :
                resolve(result);
            });
        });
    });
};

// 返回一个对象，一条数据
let queryOne = (sql, ...params) => {
    sql = mysql.format(coding + sql, params);

    console.log(sql);
    return new Promise((resolve, reject) => {
        pool.getConnection(function (err, conn) {
            if (err) {
                reject(err);
                return;
            }
            conn.query(sql, (err, result) => {
                conn.release(); //连接不再使用，返回到连接池
                if (err) {
                    reject(err);
                    return;
                }
                coding ? result.shift() : coding;
                resolve(coding ? result[0][0] : result[0] || {});
            });
        });
    });
};

// 返回单个查询结果，一个值
let querySingle = (sql, ...params) => {
    sql = mysql.format(coding + sql, params);

    console.log(sql);
    return new Promise((resolve, reject) => {
        pool.getConnection(function (err, conn) {
            if (err) {
                reject(err);
                return;
            }
            conn.query(sql, (err, result) => {
                conn.release(); //连接不再使用，返回到连接池
                if (err) {
                    reject(err);
                    return;
                }
                if (coding) {
                    result.shift();
                    // result = Array.prototype.concat.apply([],result);//二维数组转一维
                }
                for (let i in result[0]) {
                    resolve(result[0][i] || "");
                    return;
                }
                resolve("");
            });
        });
    });
};
export default {
    queryAlls,
    queryAll,
    queryOne,
    querySingle
};

// //这中间的是操作！！↓（增删查改，随你开心！！！）
// // 需要学数据库的代码
// // 这是增数据，顺序执行！！！！！
// var addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(3,?,?,?,?)';
// var addSqlParams = ['菜鸟', 'https://c.xxrunoob.com', '45643', 'CN']; //这是想增加的数据
// //增
// connection.query(addSql, addSqlParams, function (err, res) { //询问访问数据库，也就是去嫩那个数据库
//   if (err) { //失败就报个错
//     console.log('[INSERT ERROR] - ', err.message);
//     return;
//   }
//   console.log("数据库增的结果：");
//   console.log(res);
// });

// // 这是删除数据。
// var delSql = 'DELETE FROM websites where id=6'; //数据库代码，websites表中删除id为6的那一行。
// //删
// connection.query(delSql, function (err, res) { //询问访问数据库，也就是去嫩那个数据库
//   if (err) {
//     console.log('[DELETE ERROR] - ', err.message);
//     return;
//   }
//   console.log("数据库删的结果：");
//   console.log(res);
// });

// //这是改数据。
// var modSql = 'UPDATE websites SET  Id= ?,url = ? WHERE name = ?';//改name为菜鸟移动站的数据！把其id和url改掉！
// var modSqlParams = [11, 'https://huage.com', '菜鸟移动站'];
// //改
// connection.query(modSql, modSqlParams, function (err, res) {
//   if (err) {
//     console.log('[UPDATE ERROR] - ', err.message);
//     return;
//   }
//   console.log("数据库删的结果：");
//   console.log(res);
// });


// //查，数据库代码
// var sql = 'SELECT * FROM websites';
// connection.query(sql, function (err, res) { //询问访问数据库
//   if (err) { //失败就报个错。
//     console.log('[SELECT ERROR] - ', err.message);
//     return;
//   }
//   console.log("数据库查的结果：");
//   console.log(res); //成功就输出下结果
// });
// const query = (sql, params) => {
//     return new Promise((resolve, reject) => {
//         pool.getConnection((err, connection) => {
//             if (err) {
//                 reject(err);
//                 return
//             }
//             connection.query(sql, params, function (err, res) {
//                 //释放连接
//                 connection.release();
//                 err && reject(err);
//                 //事件驱动回调
//                 resolve(res);
//             });

//         });
//     })
// };